用Python寫Conwey‘s game of life
使用Python語法撰寫一支程式
首先認識一下什麼是Conwey‘s game of life,從wiki
我們可以知道這是一個用程式模擬生命的遊戲,當初始細胞圖規劃完成,細胞們會照規則在二維矩陣不停變換
在Unix世界中的許多駭客喜歡玩,而在leetcode 也有相關題目
我想用它做為我們Python練習小目標非常適合
接下來來看看程式相關部分吧
初始時有張細胞圖,細胞分生存與死亡兩種狀態,且有四個規則:
1.當前細胞為存活狀態時,當周圍的存活細胞低於2個時(不包含2個),該細胞變成死亡狀態。(模擬生命數量稀少)
2.當前細胞為存活狀態時,當周圍有2個或3個存活細胞時,該細胞保持原樣
3.當前細胞為存活狀態時,當周圍有超過3個存活細胞時,該細胞變成死亡狀態(模擬生命數量過多)
4.當前細胞為死亡狀態時,當周圍有3個存活細胞時,該細胞變成存活狀態(模擬繁殖)
程式有兩個方案
1.想自行練習的人請參考wiki說明並打開spyder撰寫
2.或從參考資料下載解壓縮後,Spyder>File>Open引入三支程式
檢查當前目錄地圖檔是否存在,並存成array
否:generateAFile,並拋出FileNotFoundError
是:說明地圖已經生成了
接下來讀地圖檔,並checkConfigure
否:印出欄位
是:拋出ValueError
在檢查欄位時確定該有欄位都存在,並用strToArray將地圖檔存成矩陣
generateAFile: 生成地圖檔,並存為example.txt
checkConfigure:檢查地圖檔是否錯誤
strToArray: 將讀入地圖檔轉成array
將array按照上述規則變換一次
按照地圖檔設定次數將array變換多次
執行過程請按照ex5>ex5>ex6>ex7執行過一次
除錯時可以把下方兩個#去掉看各ex執行結果
將檔案全數引入
ex5顯示當前地圖
ex6顯示下一步地圖
ex7顯示地圖檔設定步數後地圖結果
後來想到地圖檔轉array有更精簡做法,大家可以試試看
https://github.com/eric999j/Conway-s-Game-of-Life
其他Python學習資料
https://github.com/eric999j/Clutter/blob/master/1.工程-Python總匯.md